/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.mybeans;

import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;

/**
 *
 * @author avbravo
 */
public class CierreAnualRegimenPasarBeans {

    Sesion sesion;
    String id;
    String tipoId;
    String idRegimen;
    Double valor;
    String regimen;
    String periodoPago;
    String mesPago;
    String activo;
    static int Anio;
    String mes;
    int NumeroMes;
    PagosMensualesBeans pagosMensualesBeans;
    java.sql.Date fechaInscripcion;
    List<String> ListaIdRegimen = new ArrayList<String>();
    List<String> ListaRegimen = new ArrayList<String>();
    List<String> ListaValor = new ArrayList<String>();
    List<String> ListaPeriodoPago = new ArrayList<String>();
    List<String> ListaMesPago = new ArrayList<String>();
    List<String> ListaId = new ArrayList<String>();
    List<String> ListaTipoId = new ArrayList<String>();
    int NumeroRegistrosLista = -1;

    public static int getAnio() {
        return Anio;
    }

    public static void setAnio(int Anio) {
        CierreAnualRegimenPasarBeans.Anio = Anio;
    }

    public List<String> getListaId() {
        return ListaId;
    }

    public void setListaId(List<String> ListaId) {
        this.ListaId = ListaId;
    }

    public List<String> getListaTipoId() {
        return ListaTipoId;
    }

    public void setListaTipoId(List<String> ListaTipoId) {
        this.ListaTipoId = ListaTipoId;
    }

    public int getNumeroMes() {
        return NumeroMes;
    }

    public void setNumeroMes(int NumeroMes) {
        this.NumeroMes = NumeroMes;
    }

    public int getNumeroRegistrosLista() {
        return NumeroRegistrosLista;
    }

    public void setNumeroRegistrosLista(int NumeroRegistrosLista) {
        this.NumeroRegistrosLista = NumeroRegistrosLista;
    }

    public String getActivo() {
        return activo;
    }

    public void setActivo(String activo) {
        this.activo = activo;
    }

    public Date getFechaInscripcion() {
        return fechaInscripcion;
    }

    public void setFechaInscripcion(Date fechaInscripcion) {
        this.fechaInscripcion = fechaInscripcion;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getTipoId() {
        return tipoId;
    }

    public void setTipoId(String tipoId) {
        this.tipoId = tipoId;
    }

    public CierreAnualRegimenPasarBeans() {
        sesion = new Sesion();
        pagosMensualesBeans = new PagosMensualesBeans();

    }

    public List<String> getListaValor() {
        return ListaValor;
    }

    public void setListaValor(List<String> ListaValor) {
        this.ListaValor = ListaValor;
    }

    public List<String> getListaIdRegimen() {
        return ListaIdRegimen;
    }

    public void setListaIdRegimen(List<String> ListaIdRegimen) {
        this.ListaIdRegimen = ListaIdRegimen;
    }

    public List<String> getListaMesPago() {
        return ListaMesPago;
    }

    public void setListaMesPago(List<String> ListaMesPago) {
        this.ListaMesPago = ListaMesPago;
    }

    public List<String> getListaPeriodoPago() {
        return ListaPeriodoPago;
    }

    public void setListaPeriodoPago(List<String> ListaPeriodoPago) {
        this.ListaPeriodoPago = ListaPeriodoPago;
    }

    public List<String> getListaRegimen() {
        return ListaRegimen;
    }

    public void setListaRegimen(List<String> ListaRegimen) {
        this.ListaRegimen = ListaRegimen;
    }

    /*
     * 
     * Verificar si existe el registro
     * 
     */
    public void Procesar() {
        NumeroRegistrosLista = -1;
        ListaIdRegimen.removeAll(ListaIdRegimen);
        ListaRegimen.removeAll(ListaRegimen);
        ListaValor.removeAll(ListaValor);
        ListaPeriodoPago.removeAll(ListaPeriodoPago);
        ListaMesPago.removeAll(ListaMesPago);

        ListaId.removeAll(ListaId);
        ListaTipoId.removeAll(ListaTipoId);
        CargarRegistros();
        PasarImpuestos();
    }


    /*
     *
     * Verificar si existe el registro sin mensaje
     *
     */
    /*
     * 
     *Agregar impuestos 
     * 
     */
    /*
     * 
     * carga las listas con los impuestos
     */
    private void CargarRegistros() {
        try {
            CargarRegistrosContribuyentes();
            CargarRegistrosComercios();
            CargarRegistrosRemolques();
            CargarRegistrosVehiculos();

        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "CargarRegistros()\nError " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
        }
    }

    public boolean CargarRegistrosContribuyentes() {
        try {
            String idMunicipio = sesion.getIdmunicipio();
            String sql = "select regimencontribuyentes.*, regimen.regimen from  regimencontribuyentes, regimen "
                    + " where regimencontribuyentes.idmunicipio='" + idMunicipio + "' and  regimencontribuyentes.activo='si' "
                    + " and regimencontribuyentes.idregimen = regimen.idregimen and  regimen.activo='si' "
                    + " and regimen.idmunicipio='" + idMunicipio + "'";
            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                sesion.con.close();
                return false;
            }

            PreparedStatement psquery = sesion.con.prepareStatement(sql);
            ResultSet rs = psquery.executeQuery();
            rs.next();
            int x = rs.getRow();
            if (x == 0) {
                sesion.con.close();
                return false;
            }
            NumeroRegistrosLista++;
            ListaIdRegimen.add(rs.getString("idregimen"));
            ListaRegimen.add(rs.getString("regimen"));
            ListaValor.add(rs.getString("valor"));
            String periodoPago = rs.getString("periodopago");
            periodoPago = periodoPago.toLowerCase();

            ListaPeriodoPago.add(periodoPago);
            String mesPago = rs.getString("mespago");
            mesPago = mesPago.toLowerCase();
            ListaMesPago.add(mesPago);
            ListaId.add(rs.getString("cedula"));
            ListaTipoId.add("contribuyentes");

// Bucle para cada resultado en la consulta
            while (rs.next()) {
                ListaIdRegimen.add(rs.getString("idregimen"));
                ListaRegimen.add(rs.getString("regimen"));
                ListaValor.add(rs.getString("valor"));
                ListaPeriodoPago.add(rs.getString("periodopago"));
                ListaMesPago.add(rs.getString("mespago"));
                ListaId.add(rs.getString("cedula"));
                ListaTipoId.add("contribuyentes");
                NumeroRegistrosLista++;

            }
            sesion.con.close();
            return true;
        } catch (Exception ex) {
            sesion.MostrarMensajeError("Error ", "Clase: CierreAnualRegimenPasarBeans.java\n CargarRegistrosContribuyentes()()\n " + ex.getMessage().toString());

        }
        return false;
    }

    public boolean CargarRegistrosComercios() {
        try {
            String idMunicipio = sesion.getIdmunicipio();
            String sql = "select regimencomercios.*, regimen.regimen from  regimencomercios, regimen "
                    + " where regimencomercios.idmunicipio='" + idMunicipio + "' and  regimencomercios.activo='si' "
                    + " and regimencomercios.idregimen = regimen.idregimen and  regimen.activo='si' "
                    + " and regimen.idmunicipio='" + idMunicipio + "'";
            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                sesion.con.close();
                return false;
            }

            PreparedStatement psquery = sesion.con.prepareStatement(sql);
            ResultSet rs = psquery.executeQuery();
            rs.next();
            int x = rs.getRow();
            if (x == 0) {
                sesion.con.close();
                return false;
            }
            NumeroRegistrosLista++;
            ListaIdRegimen.add(rs.getString("idregimen"));
            ListaRegimen.add(rs.getString("regimen"));
            ListaValor.add(rs.getString("valor"));
            String periodoPago = rs.getString("periodopago");
            periodoPago = periodoPago.toLowerCase();

            ListaPeriodoPago.add(periodoPago);
            String mesPago = rs.getString("mespago");
            mesPago = mesPago.toLowerCase();
            ListaMesPago.add(mesPago);
            ListaId.add(rs.getString("idcomercio"));
            ListaTipoId.add("comercios");

// Bucle para cada resultado en la consulta
            while (rs.next()) {
                ListaIdRegimen.add(rs.getString("idregimen"));
                ListaRegimen.add(rs.getString("regimen"));
                ListaValor.add(rs.getString("valor"));
                ListaPeriodoPago.add(rs.getString("periodopago"));
                ListaMesPago.add(rs.getString("mespago"));
                ListaId.add(rs.getString("idcomercio"));
                ListaTipoId.add("comercios");
                NumeroRegistrosLista++;

            }
            sesion.con.close();
            return true;
        } catch (Exception ex) {
            sesion.MostrarMensajeError("Error ", "Clase: CierreAnualRegimenPasarBeans.java\nCargarRegistrosComercios()\n " + ex.getMessage().toString());

        }
        return false;
    }

    public boolean CargarRegistrosRemolques() {
        try {
            String idMunicipio = sesion.getIdmunicipio();
            String sql = "select regimenremolques.*, regimen.regimen from  regimenremolques, regimen "
                    + " where regimenremolques.idmunicipio='" + idMunicipio + "' and  regimenremolques.activo='si' "
                    + " and regimenremolques.idregimen = regimen.idregimen and  regimen.activo='si' "
                    + " and regimen.idmunicipio='" + idMunicipio + "'";
            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                sesion.con.close();
                return false;
            }

            PreparedStatement psquery = sesion.con.prepareStatement(sql);
            ResultSet rs = psquery.executeQuery();
            rs.next();
            int x = rs.getRow();
            if (x == 0) {
                sesion.con.close();
                return false;
            }
            NumeroRegistrosLista++;
            ListaIdRegimen.add(rs.getString("idregimen"));
            ListaRegimen.add(rs.getString("regimen"));
            ListaValor.add(rs.getString("valor"));
            String periodoPago = rs.getString("periodopago");
            periodoPago = periodoPago.toLowerCase();

            ListaPeriodoPago.add(periodoPago);
            String mesPago = rs.getString("mespago");
            mesPago = mesPago.toLowerCase();
            ListaMesPago.add(mesPago);
            ListaId.add(rs.getString("idremolque"));
            ListaTipoId.add("remolques");

// Bucle para cada resultado en la consulta
            while (rs.next()) {
                ListaIdRegimen.add(rs.getString("idregimen"));
                ListaRegimen.add(rs.getString("regimen"));
                ListaValor.add(rs.getString("valor"));
                ListaPeriodoPago.add(rs.getString("periodopago"));
                ListaMesPago.add(rs.getString("mespago"));
                ListaId.add(rs.getString("idremolque"));
                ListaTipoId.add("remolques");
                NumeroRegistrosLista++;

            }
            sesion.con.close();
            return true;
        } catch (Exception ex) {
            sesion.MostrarMensajeError("Error ", "Clase: CierreAnualRegimenPasarBeans.java\nCargarRegistrosRemolques()\n " + ex.getMessage().toString());

        }
        return false;
    }

    public boolean CargarRegistrosVehiculos() {
        try {
            String idMunicipio = sesion.getIdmunicipio();
            String sql = "select regimenvehicles.*, regimen.regimen from  regimenvehicles, regimen "
                    + " where regimenvehicles.idmunicipio='" + idMunicipio + "' and  regimenvehicles.activo='si' "
                    + " and regimenvehicles.idregimen = regimen.idregimen and  regimen.activo='si' "
                    + " and regimen.idmunicipio='" + idMunicipio + "'";
            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                sesion.con.close();
                return false;
            }

            PreparedStatement psquery = sesion.con.prepareStatement(sql);
            ResultSet rs = psquery.executeQuery();
            rs.next();
            int x = rs.getRow();
            if (x == 0) {
                sesion.con.close();
                return false;
            }
            NumeroRegistrosLista++;
            ListaIdRegimen.add(rs.getString("idregimen"));
            ListaRegimen.add(rs.getString("regimen"));
            ListaValor.add(rs.getString("valor"));
            String periodoPago = rs.getString("periodopago");
            periodoPago = periodoPago.toLowerCase();

            ListaPeriodoPago.add(periodoPago);
            String mesPago = rs.getString("mespago");
            mesPago = mesPago.toLowerCase();
            ListaMesPago.add(mesPago);
            ListaId.add(rs.getString("idvehiculo"));
            ListaTipoId.add("vehiculos");

// Bucle para cada resultado en la consulta
            while (rs.next()) {
                ListaIdRegimen.add(rs.getString("idregimen"));
                ListaRegimen.add(rs.getString("regimen"));
                ListaValor.add(rs.getString("valor"));
                ListaPeriodoPago.add(rs.getString("periodopago"));
                ListaMesPago.add(rs.getString("mespago"));
                ListaId.add(rs.getString("idvehiculo"));
                ListaTipoId.add("vehiculos");
                NumeroRegistrosLista++;

            }
            sesion.con.close();
            return true;
        } catch (Exception ex) {
            sesion.MostrarMensajeError("Error ", "Clase: CierreAnualRegimenPasarBeans.java\nCargarRegistrosVehiculos()\n " + ex.getMessage().toString());

        }
        return false;
    }

    private void PasarImpuestos() {
        try {
            for (int i = 0; i <= getNumeroRegistrosLista(); i++) {
                this.id = getListaId().get(i);
                this.tipoId = getListaTipoId().get(i);
                this.idRegimen = getListaIdRegimen().get(i);
                this.periodoPago = getListaPeriodoPago().get(i);
                this.periodoPago = this.periodoPago.trim();
                this.periodoPago = this.periodoPago.toLowerCase();
                this.mesPago = getListaMesPago().get(i);

                pagosMensualesBeans.setAnio(Anio);
                pagosMensualesBeans.setId(this.id);
                pagosMensualesBeans.setTipoId(this.tipoId);
                pagosMensualesBeans.setIdRegimen(this.idRegimen);
                pagosMensualesBeans.setPagado("no");
                pagosMensualesBeans.setIdRecibo(0);
                pagosMensualesBeans.setActivo("si");
                if (periodoPago.equals("mensual")) {

                    String[] arrayMes = sesion.getArrayMeses();

                    for (int m = 0; m < 12; m++) {
                        pagosMensualesBeans.setMes(arrayMes[m]);
                        pagosMensualesBeans.setNumeroMes(m);
                        pagosMensualesBeans.AgregarPagosMensualesSinMensajes();
                    }

                } else {
                    //anual
                    pagosMensualesBeans.setMesPago(this.mesPago);                    
                    pagosMensualesBeans.AgregarPagosAnualesSinMensajes();
                }
            }

        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "PasarImpuestos()\nError " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);

        }
    }
}

